<!DOCTYPE html>
<html>

<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>寻找两个有序数组的中位数</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <style>
        .box {
            display: flex;
            padding: 5%;
        }

        .left-wrap {
            width: 40%;
        }

        pre {
            text-align: left;
            margin-left: -20%;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="left-wrap">
            <div class="notranslate">
                <p>将一个给定字符串根据给定的行数，以从上往下、从左到右进行&nbsp;Z 字形排列。</p>

                <p>比如输入字符串为 <code>"LEETCODEISHIRING"</code>&nbsp;行数为 3 时，排列如下：</p>

                <pre>
                    L   C   I   R
                    E T O E S I I G
                    E   D   H   N
                    </pre>

                <p>之后，你的输出需要从左往右逐行读取，产生出一个新的字符串，比如：<code>"LCIRETOESIIGEDHN"</code>。</p>

                <p>请你实现这个将字符串进行指定行数变换的函数：</p>

                <pre>
                    string convert(string s, int numRows);
                </pre>

                <p><strong>示例&nbsp;1:</strong></p>

                <pre>
                    <strong>输入:</strong> s = "LEETCODEISHIRING", numRows = 3
                    <strong>输出:</strong> "LCIRETOESIIGEDHN"
                    </pre>

                <p><strong>示例&nbsp;2:</strong></p>

                <pre>
                    <strong>输入:</strong> s = "LEETCODEISHIRING", numRows =&nbsp;4
                    <strong>输出:</strong>&nbsp;"LDREOEIIECIHNTSG"
                    <strong>解释:</strong>
                    
                    L     D     R
                    E   O E   I I
                    E C   I H   N
                    T     S     G</pre>
            </div>
        </div>
    </div>
</body>
<script>
    /**
    * @param {string} s
    * @param {number} numRows
    * @return {string}
    */
    var convert = function (s, numRows) {
        if (numRows == 1) return s;
        const len = Math.min(s.length, numRows); // 取最小值
        const arr = [];
        for (let i = 0; i < len; i++) arr[i] = ""; // 生成len个长度的数组，
        let index = 0 // 下标
        let next = false // 是否下一个
        for (n of s) {
            arr[index] += n // 把同一行的放到同一个里面
            if (index == 0 || index == numRows - 1) {
                next = !next
            }
            console.log(index)
            index += next ? 1: -1  // 例如是 numrows =4  就是   0 1 2 3 2 1 0 1 2 3 。。。
        }
        let str = ''
        for (m of arr) {
            str += m
        }
        return str
    };
    var s = "LEETCODEISHIRING", numRows = 4
    console.log(convert(s, numRows))
</script>

</html>